package cn.edu.ncu.housinghub.entity.contract;

import jakarta.validation.constraints.*;
import lombok.Data;

import java.math.BigDecimal;
import java.util.Date;


@Data
public class ContractApplication {

    //签约申请id
    private Long contractApplicationId;

    @NotNull(message = "用户id不能为空")
    //用户id
    private Long userId;

    @NotNull(message = "房东id不能为空")
    //房东id
    private Long landlordId;

    @NotNull(message = "真实姓名不能为空")
    //真实姓名
    private String realName;

    @NotNull(message = "身份证号不能为空")
    //身份证号
    private String idCard;

    @NotNull(message = "联系电话不能为空")
    @Pattern(regexp = "^1[3-9]\\d{9}$", message = "手机号码格式错误")
    //联系电话
    private String phone;

    @NotNull(message = "租赁开始日期不能为空")
    @Future(message = "租赁开始日期必须是未来日期")
    //租赁起始日期
    private Date leaseStartDate;


    @NotNull(message = "租赁结束日期不能为空")
    @Future(message = "租赁结束日期必须是未来日期")
    //租赁结束日期
    private Date leaseEndDate;

    @NotNull(message = "月租金不能为空")
    @Positive(message = "月租金必须大于0")
    //月租金
    private BigDecimal monthlyRent;


    @Positive(message = "押金必须大于0")
    //押金
    private BigDecimal deposit;

    @NotNull(message = "支付方式不能为空")
    @Min(value = 1, message = "支付方式必须为有效值")
    @Max(value = 3, message = "支付方式必须为有效值")
    //支付方式（1=月付，2=季付，3=年付）
    private Integer paymentMethod;

    @NotNull(message = "房源id不能为空")
    //房源id
    private Long houseId;
    //申请时间
    private Date applyTime;


    @Min(value = 0, message = "申请状态必须为有效值")
    @Max(value = 2, message = "申请状态必须为有效值")
    //申请状态（0=房东审核中，1=房东已经同意，2=房东已拒绝）
    private Integer status;

    //拒绝原因
    private String refuseReason;

}
